<?php

namespace app\common\business;


class SysConfig
{
    public $sysSysConfigObj = null;
    public function __construct()
    {
        $this->sysSysConfigObj = new \app\common\model\mysql\SysConfig();
    }

    //根据字典类型查询字典数据信息
    public function getConfigData($configKey){
        $configData = $this->sysSysConfigObj->getConfigList($configKey);
        if(!$configData){
            return [];
        }
        $configData = $configData->toArray();
        return $configData;
    }

    /**
     * 查询参数列表
     * @param $where
     * @param $field
     * @param $limit
     * @param $page
     * @return array
     * @throws \think\db\exception\DbException
     */
    public function getNormalConfigData($where,$field,$limit,$page){
        $dictData = $this->sysSysConfigObj->getNormalConfigList($where,$field,$limit,$page);
        if(!$dictData){
            return [];
        }
        $dictData = $dictData->toArray();
        return $dictData;
    }

    //添加参数数据
    public function addConfig($data){
        //根据$config_name去数据库查询是否存在这条记录
        $postNameResult = $this->getConfigByName($data['config_name']);
        if($postNameResult){
            throw new \think\Exception("该参数名称已经存在请重新设置");
        }
        //根据$config_key去数据库查询是否存在这条记录
        $postCodeResult = $this->getConfigByKey($data['config_key']);
        if($postCodeResult){
            throw new \think\Exception("该参数键名已经存在请重新设置");
        }
        try {
            $this->sysSysConfigObj->save($data);
        }catch (\Exception $e){
            throw new \think\Exception($e->getMessage());
        }
        return $this->sysSysConfigObj->id;
    }

    /**
     * 根据主键id更新数据表中的数据
     * @param $id
     * @param $data
     * @return bool
     */
    public function updateById($id,$data){
        $id = intval($id);
        if(empty($id) || empty($data) || !is_array($data)){
            return false;
        }
        //根据$config_name去数据库查询是否存在这条记录
        $postNameResult = $this->getConfigByName($data['config_name'],$id);
        if($postNameResult){
            throw new \think\Exception("该数据标签已经存在请重新设置");
        }
        //根据$config_key去数据库查询是否存在这条记录
        $postCodeResult = $this->getConfigByKey($data['config_key'],$id);
        if($postCodeResult){
            throw new \think\Exception("该数据键值已经存在请重新设置");
        }
        $where = [
            "config_id"=>$id,
        ];
        return $this->sysSysConfigObj->where($where)->find()->save($data);
    }

    public function getConfigByName($config_name,$config_id = ''){
        $user = $this->sysSysConfigObj->getConfigByNameModel($config_name,$config_id);
        if(!$user){
            return [];
        }
        return $user->toArray();
    }

    public function getConfigByKey($config_key,$config_id = ''){
        $user = $this->sysSysConfigObj->getConfigByKeyModel($config_key,$config_id);
        if(!$user){
            return [];
        }
        return $user->toArray();
    }

    //根据$id,去数据库查询是否存在这条记录
    public function getConfigById($id){
        $user = $this->sysSysConfigObj->getConfigIdData($id);
        if(!$user){
            return [];
        }
        return $user->toArray();
    }

    //根据$ids数组，删除数据库记录delete
    public function DelConfigIds($ids){
        $ids = explode(',', $ids);
        $result = $this->sysSysConfigObj->DeleteConfigIds($ids);
        return $result;
    }
}
